Team Topologies
https://gyazo.com/d2543f5d57d5fd388bea43080f72aa68
TL;DR
逆コンウェイの法則など過去に提案されていたものを実際にチームの形に落とした話
4つのチームと3つの Interaction Mode でチームでビジネス価値の提供を中心にしつつ、うまくケイパビリティを埋めていくという話
複数の Stream-aligned Team と それを支援をする Enabling Team と Complicated-subsystem Team と Platform Team がコア
https://gyazo.com/fd278edafd75b2b5cee8ce92debecc93
https://gyazo.com/31f74680bf0a5e7ae61823cba3d36121
Summary
Fundamental
The Reverse Conway Maneuver (逆コンウェイの法則)
Restrict Unnecessary Communication
What we need is focused communication between specific teams
Use Samll, Long-Lived Teams as the Standard
Dunbar's number によれば、
~ 5 : limit of people with whom we can hold close personal releationships and working memory
つまり5人程度まで隣のメンババーが何をしてるのかを把握できる
~ 15 : limit of people with whom we can experience deep trust
~ 50 : limit of people with whom we can have mutual
~ 150 : limit of people whose capabilities we can remember
Restrict Team Responsibilities to Match Team Cognitive Load
1988年に John Sweller によれば、Cognitive Load は "the total amount of mental effort being used in the working memory" と定義され、3種類あると言われてる
Instrinsic Cognitive Load : Relates to aspects of the task fundamental to the problem space
Extraneous Cognitive Load : Relates to the environment in which task is being done
Germane Cognitive Load : Relates to aspects of the task that need special attention for learning or high performance
Organizations should attempt to minimize intrinsic cognitive load and eliminate extraneous cognitive load altogether, leaving more space for germane coginitive load
The Four Fundamental Team Topologies (Stream Aligned Team is the main, with several enabling team)
Stream-aligned Team
The Team is empowered to build and deliver customer or user value as quickly, safely and independentely as possible, without requiring hand-offs to other teams to perform parts of the work.
Enabling Team
High-Performing teams are continuously improving their capabilities in order to stay ahead
が Stream-Aligned Team は一定のプレッシャーの元、機能開発をする中でどのように時間を取って Capabilities を得るか
An enabling team is composed of specialist in a given technical domain, and they help bridge this capability gap. Such teams cross-cut to the stream-aligned teams and have the required bandwidth to research, try out options, and make informed suggestions on adequate tooling, practices frameworks, and any of the ecosystem choices around the application stack.This allows the stream-aligned team the time to acquire and evolve capabilities without having to invest the associated effort.
Complicated-subsystem Team
A complicated-subsystem team is responsible for building and maintaining a part of the system that depends heaviliy on specialist knowledge.
The goal of this team is to reduce cognitive load of stream-aligned teams working on systems that include or use the complicated subsytem.
Platform Team
The platform team provides internal services to reduce the cognitive load that would be required from stream-aligned teams to develop these underlying services.
大規模な場合には、 Platform Team の中にさらに Stream-Aligned Team や Enabling Team を置くこともあり、フラクタル構造と捉えることもできる
Team Interaction Modes
Collaboration
Working closely together with another team
Advantages
革新的な方法に早くたどり着いたり、発見がメイン
他のチームに依頼したり、待つ必要がない
Disadvantages
チームの責任範囲が広く共有されてしまう
別チームのコンテキストを理解しないといけないので認知的負荷が高い
成果物の量が一時的に落ちてしまうこともある
Typical Uses
Stream-aligned Team と Complicated-subsystem Team が一緒に働く
Stream-aligned Team と Platform Team が一緒に働く
Platform Team と Complicated-subsystem Team が一緒に働く
X-as-a-Service
Consuming or providing something with minimal collaboration
Advantages
責任分解点が明確
お互いの詳細なコンテキストを把握する必要がない
Disadvantages
革新的な方法などは生まれにくい
コミュニケーションやAPIが効率的じゃない場合、一連のワークフローのボトルネックになってしまう
Typical Uses
Stream-aligned Team と Complicated-subsystem Team が Plaform Team のツールを使う
Stream-aligned Team と Complicated-subsystem Team が Complicated-subsystem の機能を使うなど
Facilitating
Helping (or being helped by) another team to clear imedients
Advantages
Stream-aligned Team のワークフローを効率的に進めることができる
Platform Team などで満たせてないケイパビリティを見つけたりできる
Disadvantages
このモードを継続してしまうと、ビルドや実行するために経験のあるメンバーが必要になってしまう
Typical Uses
Enabling Team が Stream-aligned Team に対して働きかける場合
感想
開発基盤的なチームの働き方や価値などをイメージできた
特に自分の中でCynefinの中のComplexの部分はStream Aligned TeamでありComplecatedな部分が支援チームであり、スクラムやDDDの範囲などについてわかりを得た
特に、支援をする3つのチーム (3つの観点) とそれを提供するコミュニケーション方法に自分の中で名前がついてよかった
Facilitating と Collaboration の具体的なイメージが湧いてないのでその辺も調べていきたい
Ref